package com.spider.util;

import com.spider.entity.BaseEntity;

import java.math.BigDecimal;

public class CommonUtil {

    /**
     * 获取库存统一算法
     * 包装数量>0 就是有包装的
     * =0的 就按库存/基本数量 算出来的得出来的包装数量
     * @param stock 包装数量
     * @param kc 库存
     * @return
     */
    public static int getStock(String stock,String kc,String jibenNum){
        int result =0;
        //添加库存是否为0/0.00的判断
        result=Integer.parseInt(WanghuaUtil.deletePercent(stock));
        if(result==0){
            double kcInt = StringUtil.isNotEmpty(kc) ? Double.parseDouble(kc) : 0;
            if(kcInt >0){
                String jbnum =jibenNum;
                double jbnumInt = Double.parseDouble(jbnum);
                double stockDouble = kcInt / jbnumInt;
                result = (int) stockDouble;
            }
        }
        return result;
    }
    /**
     * 20241122 库存算法，根据baseEntity算法
     * 库存如何获取：
     * 1.先取包装数量，值可能为NULL,0.00 >0
     * 2.如果包装数量为0，则取库存/基本数量，算出包装数量
     */
/*    public static int getStock(BaseEntity base){
        int stockAfter;
        int packagenum =WanghuaUtil.processNum(base.getPackagenum());
        if(packagenum==0){
            //202400303 添加  如果为0则去库存/包装数量得出数据，如果再为0则变为期货
            String kc =base.getKc();
            double kcInt = StringUtil.isNotEmpty(kc) ? Double.parseDouble(kc) : 0;
            if(kcInt >=1){
                double jbnum = Double.parseDouble(base.getJibenNum());
                double stockDouble = kcInt / jbnum;
                int stock = (int) stockDouble;
                if(stock>0){
                    stockAfter = stock;
                }else{
                    stockAfter =0;
                }

            }else{
                stockAfter =0;
            }
        }else{
            stockAfter = packagenum;
        }
        return stockAfter;
    }*/

    /**
     * 获取包装单位
     * @param base
     * @return
     */
    public static String getUnit(BaseEntity base){
        String unit = null;
        //如果有基本单位，先取基本单位，否则取单位
        double jibenNumDouble=Double.parseDouble(base.getJibenNum());
        if(jibenNumDouble>1){
            unit = base.getJibenunit();
        }else{
            unit = base.getUnit();
        }
        return unit;
    }

    /**
     * 获取包装数量
     * @param base
     * @return
     */
    public static String getUnitNum(BaseEntity base){
        String unitNum = null;
        //如果有基本单位，先取基本单位，否则取单位
        double jibenNumDouble=Double.parseDouble(base.getJibenNum());
        if(jibenNumDouble>1){
            unitNum =base.getJibenNum();
        }else{
            unitNum =base.getNum()+"";
        }
        return unitNum;
    }

    /**
     * 目前只计算打折过的，如果传递原价，那直接用原价即可，只有打折才区分是否打折还是用原价
     * @param base
     * @return
     */
    public static BigDecimal getPrice(BaseEntity base,double discount){

        BigDecimal basePrice=new BigDecimal(base.getPrice());
        BigDecimal price =basePrice;
        if(base.getCxbs()!=null&&base.getCxbs().equals("不打折")){
            return price;
        }else{
            //判断产品类型不是氘代的
            if(base.getType()!=null&&base.getType().equals("氘代")){
                return price;
            }
        }
        // 不是氘代和不打折的，需要根据折扣去计算价格
        price = basePrice.multiply(BigDecimal.valueOf(discount))
                .setScale(2, BigDecimal.ROUND_HALF_UP);
        //不是氘代和不打折的，需要根据折扣去计算价格
        return price;
    }

    /**
     * 格式化num，把.0和.00去掉
     * @param numStr
     * @return
     */
    public static String formatFloat(String numStr) {
        try {
            // 将字符串转换为浮点数
            float num = Float.parseFloat(numStr);

            // 检查是否以 .0 或 .00 结尾
            if (num % 1 == 0) { // 如果浮点数的小数部分为 0
                return Integer.toString((int) num); // 去掉小数部分，只保留整数部分
            } else {
                // 保留原值
                return numStr;
            }
        } catch (NumberFormatException e) {
            // 如果输入的字符串不是有效的浮点数，直接返回原字符串
            return numStr;
        }

    }

    public static void main(String[] args) {
        // 测试用例
        System.out.println(formatFloat("123.0"));   // 输出: 123
        System.out.println(formatFloat("123.00"));  // 输出: 123
        System.out.println(formatFloat("123.1"));   // 输出: 123.1
        System.out.println(formatFloat("123.10"));  // 输出: 123.10
        System.out.println(formatFloat("123.01"));  // 输出: 123.01
        System.out.println(formatFloat("abc"));     // 输出: abc
    }

}
